package cn.com.dstz.utils;

public class ByteTo16String{
	protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

	private static String bufferToHex( byte bytes[], int m, int n ) {
		StringBuffer stringbuffer = new StringBuffer( 2 * n );
		int k = m + n;
		for ( int l = m; l < k; l++ ){
			appendHexPair( bytes[ l ], stringbuffer );
		}
		return stringbuffer.toString( );
	}

	private static void appendHexPair( byte bt, StringBuffer stringbuffer ) {
		char c0 = hexDigits[ ( bt & 0xf0 ) >> 4 ];// 取字节中高 4 位的数字转换, >>> // 为逻辑右移，将符号位一起右移,此处未发现两种符号有何不同
		char c1 = hexDigits[ bt & 0xf ];// 取字节中低 4 位的数字转换
		stringbuffer.append( c0 );
		stringbuffer.append( c1 );
	}

	public static String bufferToHex( byte bytes[] ) {
		return bufferToHex( bytes, 0, bytes.length );
	}
}
